package com.alameda.common.utils;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Map工具类
 *
 * @author Lv
 * @date 2023/6/4
 */
public class MapUtils {
    /**
     * 创建HashMap（默认长度为16）
     *
     * @param <K> key泛型
     * @param <V> Value泛型
     * @return hashMap对象
     */
    public static <K, V> Map<K, V> newHashMap() {
        return new HashMap<>(16);
    }

    /**
     * 创建HashMap（自定义长度）
     *
     * @param length 自定义初始长度
     * @param <K>    key泛型
     * @param <V>    Value泛型
     * @return hashMap对象
     */
    public static <K, V> Map<K, V> newHashMap(int length) {
        return new HashMap<>(length);
    }

    /**
     * 创建ConcurrentHashMap（默认长度为16）
     *
     * @param <K> key泛型
     * @param <V> Value泛型
     * @return concurrentHashMap对象
     */
    public static <K, V> Map<K, V> newConcurrentHashMap() {
        return new ConcurrentHashMap<K, V>(16);
    }

    /**
     * 创建ConcurrentHashMap（自定义长度）
     *
     * @param length 自定义初始长度
     * @param <K>    key泛型
     * @param <V>    Value泛型
     * @return concurrentHashMap对象
     */
    public static <K, V> Map<K, V> newConcurrentHashMap(int length) {
        return new ConcurrentHashMap<K, V>(length);
    }
}
